package com.example.seey2023.redis;

import com.example.seey2023.utils.IPUtil;
import lombok.extern.slf4j.Slf4j;
import redis.clients.jedis.Jedis;

import java.util.Iterator;
import java.util.List;
import java.util.Set;

@Slf4j
public class TestConnRedis {
    public static void main(String[] args) throws Exception {
        // 连接本地的Redis服务
        Jedis jedis = new Jedis("localhost");
//        Jedis jedis = new Jedis("114.116.105.96");
        // 如果Redis服务设置了密码，需要下面这行，没有就不用
        // jedis.auth("redis123456");
        System.out.println("连接成功");
        // 查看服务是否运行
        System.out.println("服务正在运行：" + jedis.ping());

        // 1.String类型[运用于“确诊：100；死亡：10”]
        System.out.println("=====String字符串=====");
        jedis.set("nocvfin", "20221228");
        System.out.println(jedis.get("nocvfin"));
        // 2.List列表【运用于新闻列表】
        // 存储数据到List列表中
        System.out.println("=====List列表======");
        jedis.lpush("site-list", "Runoob");
        jedis.lpush("site-list", "Bing");
        jedis.lpush("site-list", "Seey");
        // 获取存储的数据并输出
        List<String> list = jedis.lrange("site-list", 0, 2);
        for (int i = 0; i < list.size(); i++) {
            System.out.println("列表项为：" + list.get(i));
        }

        // 3.Set无序集合
        // Redis的Set是String类型的无序集合。集合成员唯一
        System.out.println("=====Set无序集合=====");
        jedis.sadd("nocvSet", "111");
        jedis.sadd("nocvSet", "222");
        jedis.sadd("nocvSet", "333");
        jedis.sadd("nocvSet", "111");
        Set<String> nocvlist = jedis.smembers("nocvSet");
        for (String s : nocvlist) {
            System.out.println(s);
        }
        Set<String> keys = jedis.keys("*");
        Iterator<String> it = keys.iterator();
        int i = 0;
        while (it.hasNext()) {
            String key = it.next();
            System.out.println("key" + i + ":" + key);
            i++;
        }

        // 4.sorted set有序集合
        System.out.println("=====sorted set有序集合=====");
        jedis.zadd("nocvSet2", 1, "001");
        jedis.zadd("nocvSet2", 3, "003");
        jedis.zadd("nocvSet2", 5, "005");
        jedis.zadd("nocvSet2", 4, "444");
        jedis.zadd("nocvSet2", 2, "222");
        Set<String> nocvset2 = jedis.zrange("nocvSet2", 0, -1);
        for (String s : nocvset2) {
            System.out.println(s);
        }

        Long nocvset21 = jedis.zrank("nocvSet2", "222");
        System.out.println(nocvset21);// "1", 返回索引

        // 返回符合条件的score区间个数
        Long aLong = jedis.zremrangeByScore("nocvSet2", 0, 100);
        System.out.println(aLong);

        // 返回sorted set有序集合中，成员的分数值
        Double nocvSet22 = jedis.zscore("nocvSet2", "003");
        System.out.println(nocvSet22);

        //IP地址测试
        System.out.println("=====IPTest=====");
        log.info("日志：logInfoTest");
        log.error("日志：logErrorTest");
        log.debug("日志：logDebugTest");
        System.out.println("getV4ip: " + IPUtil.getV4IP3());//120.231.xx.xx
    }
}
